// 存储已发现的图片
let discoveredImages = new Set();

// 检查图片是否有效
function isValidImage(img) {
    // 检查图片是否已加载
    if (!img.complete) return false;
    
    // 检查图片是否有效
    if (!img.naturalWidth || !img.naturalHeight) return false;
    
    // 检查图片大小（过滤掉太小的图片）
    if (img.naturalWidth < 50 || img.naturalHeight < 50) return false;
    
    // 检查图片URL是否有效
    try {
        new URL(img.src);
    } catch {
        return false;
    }
    
    return true;
}

// 获取图片信息
function getImageInfo(img) {
    return {
        src: img.src,
        alt: img.alt || '',
        width: img.naturalWidth,
        height: img.naturalHeight,
        fileSize: 'Unknown', // 文件大小需要通过额外请求获取
        filename: new URL(img.src).pathname.split('/').pop() || 'image.jpg'
    };
}

// 处理新发现的图片
function processImage(img) {
    // 如果图片已经处理过，跳过
    if (discoveredImages.has(img.src)) return;
    
    // 等待图片加载完成
    if (!img.complete) {
        img.addEventListener('load', () => {
            if (isValidImage(img)) {
                discoveredImages.add(img.src);
                notifyNewImage(img);
            }
        });
        img.addEventListener('error', () => {
            console.log('Image failed to load:', img.src);
        });
    } else if (isValidImage(img)) {
        discoveredImages.add(img.src);
        notifyNewImage(img);
    }
}

// 通知发现新图片
function notifyNewImage(img) {
    const imageInfo = getImageInfo(img);
    chrome.runtime.sendMessage({
        type: 'newImage',
        image: imageInfo
    }).catch(error => {
        console.log('Failed to send image info:', error);
    });
}

// 扫描页面中的所有图片
function scanImages() {
    const images = document.getElementsByTagName('img');
    for (const img of images) {
        processImage(img);
    }
}

// 监听DOM变化，检测新加载的图片
const observer = new MutationObserver((mutations) => {
    for (const mutation of mutations) {
        for (const node of mutation.addedNodes) {
            if (node.nodeName === 'IMG') {
                processImage(node);
            } else if (node.getElementsByTagName) {
                const images = node.getElementsByTagName('img');
                for (const img of images) {
                    processImage(img);
                }
            }
        }
    }
});

// 监听来自扩展的消息
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.type === 'getImages') {
        // 重新扫描页面上的图片
        scanImages();
        // 返回当前已发现的所有图片
        const images = Array.from(discoveredImages).map(src => {
            const img = Array.from(document.getElementsByTagName('img'))
                .find(img => img.src === src);
            return img ? getImageInfo(img) : null;
        }).filter(Boolean);
        
        sendResponse({ images });
        return true; // 保持消息通道开启
    }
    
    if (request.type === 'pageLoaded') {
        // 页面加载完成时扫描图片
        scanImages();
        return true;
    }
});

// 开始监听DOM变化
observer.observe(document.body, {
    childList: true,
    subtree: true
});

// 初始扫描
scanImages();

// 页面加载完成后再次扫描
window.addEventListener('load', scanImages);

// 监听滚动事件，处理懒加载图片
let scrollTimeout;
window.addEventListener('scroll', () => {
    clearTimeout(scrollTimeout);
    scrollTimeout = setTimeout(scanImages, 200);
}, { passive: true });
